using System;

namespace SharedObjects
{
	/// <summary>
	/// A story arc is in essence a collection of subsequent StoryTasks, making up a complete story one by one.
	/// An Arc object has only a startingTask, which may or may not be the only task in the whole story.
	/// Ex. "The heist"
	/// "This corporation is getting too hard a competitor to deal with normally. We need you to make sure they get thrown back in their progress."
	/// - Task 1: "Break into corporation's mainframe." - "You need to gain access to this corporation's mainframe. We suspect they might have their production blueprints stored there."
	///		- Objective 1: Break into mainframe
	///	
	/// - Task 2: "Steal production blueprints" - "Look for a file with name xyz. This is the data we need. Copy that file to your storage."
	///   Depends on: Task 1, Objective 1 (Success)
	///		- Objective 1a: Copy File
	///		- Objective 1b: Delete File
	/// 
	/// - Task 3: "Deliver production blueprints" - "Please upload the file to this machine. Enclosed are the access credentials."
	///	  Depends on: Task 2, Objective 1 (Success)
	///		- Objective 1: Copy File
	/// 
	/// - Task 4: "Partial success." - "Well, too bad you deleted that file before we got a copy. However that will at least throw them back for a few months."
	///	  Depends on: Task 1, Objective 1a (Failed), Objective 1b (Success)
	///		- No objectives, mission end.
	/// 
	/// - Task 5: "Break into mainframe again" - "We need you to break into that mainframe again. Perhaps we can throw them back in progress."
	///   Depends on: 
	///			Task 2, Objective 1b (Failed)
	///			Task 3, Objective 1 (Success)
	///		- Objective 1: Break into mainframe
	/// </summary>
	public class StoryArc : StoryBase
	{
		public ulong CreatorId { get; set; }
		public DateTime CreationDate { get; set; }
	}

	//public class StoryArcTest
	//{
	//    public StoryArc Arg = new StoryArc
	//    {
	//        ID = Guid.NewGuid().ToLong(),
	//        Title = "Test Arc",
	//        StartingTask = new StoryTask
	//        {
	//            Title = "Task 1",
	//            Description = "This is the first task",
	//            State = TaskState.InProgress,
	//            Targets = new List<StoryTaskTarget>
	//            {
	//                new StoryTaskTarget
	//                {
	//                    ID = 00001,
	//                    TargetType = TaskTargetType.Dynamic
	//                },
	//                new StoryTaskTarget
	//                {
	//                    ID = 00002,
	//                    TargetType = TaskTargetType.Static,
	//                    TargetId = 0123456
	//                }
	//            },
	//            Objectives = new List<StoryTaskObjective>
	//                //each Task has 1 or more Objectives that may (logically) relate to each other or not.
	//            {
	//                new StoryTaskObjective
	//                {
	//                    ObjectType = ObjectiveObjectType.File,
	//                    ObjectId = 0,
	//                    TaskTargetId = 00001,
	//                    State = ObjectiveState.Incomplete,
	//                    RequiredAction = ObjectiveAction.CopyFile
	//                },
	//                new StoryTaskObjective
	//                {
	//                    ObjectType = ObjectiveObjectType.File,
	//                    ObjectId = 0,
	//                    TaskTargetId = 00002,
	//                    State = ObjectiveState.Incomplete,
	//                    RequiredAction = ObjectiveAction.DeleteFile,
	//                }
	//            }
	//        }
	//    };
	//}
}